home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2005 June (DVD) / DPPRO0605DVD.iso / Install / program files / Borland / BDS / 3.0 / Demos / Delphi.Net / CLR / MDI / MDI.DPR < prev   
Encoding:
Text File  |  2004-10-22  |  4.8 KB  |  180 lines

  1. program MDI;
  2.  
  3. uses
  4.   System.Drawing,
  5.   System.ComponentModel,
  6.   System.Windows.Forms,
  7.   Document;
  8.  
  9. type
  10.   { .NET to VCL mapping }
  11.   TMainMenu    = System.Windows.Forms.MainMenu;
  12.   TMenuItem    = System.Windows.Forms.MenuItem;
  13.   TForm        = System.Windows.Forms.Form;
  14.   TStatusBar   = System.Windows.Forms.StatusBar;
  15.   TContextMenu = System.Windows.Forms.ContextMenu;
  16.   TContainer   = System.ComponentModel.Container;
  17.   TSize        = System.Drawing.Size;
  18.   TPoint       = System.Drawing.Point;
  19.   TFont        = System.Drawing.Font;
  20.   TFontFamily  = System.Drawing.FontFamily;
  21.  
  22. type
  23.   { Application main form }
  24.   [STAThread]
  25.   TMainForm = class(TForm)
  26.   private
  27.     FComponents: TContainer;
  28.     FWindowCount: Integer;
  29.     procedure InitComponents;
  30.     procedure AddDocument;
  31.     procedure FileAddClicked(Sender: TObject; Args: EventArgs);
  32.     procedure FileExitClicked(Sender: TObject; Args: EventArgs);
  33.     procedure MDIChildActivated(Sender: TObject; Args: EventArgs);
  34.     procedure WindowCascadeClicked(Sender: TObject; Args: EventArgs);
  35.     procedure WindowTileHClicked(Sender: TObject; Args: EventArgs);
  36.     procedure WindowTileVClicked(Sender: TObject; Args: EventArgs);
  37.   published
  38.     MainMenu: TMainMenu;
  39.     StatusBar: TStatusBar;
  40.   public
  41.     constructor Create(Owner: TObject);
  42.     destructor Destroy; override;
  43.   end;
  44.  
  45. { TMainForm }
  46.  
  47. constructor TMainForm.Create(Owner: TObject);
  48. var
  49.   miFile, miAddDoc, miSpace, miExit, miWindow: TMenuItem;
  50. begin
  51.   inherited Create;
  52.   InitComponents;
  53.  
  54.   //Setup MDI stuff
  55.   IsMdiContainer:= True;
  56.   Add_MdiChildActivate(MDIChildActivated);
  57.  
  58.   //Add File Menu
  59.   miFile:= mainMenu.MenuItems.Add('&File');
  60.   miFile.MergeOrder:=0;
  61.   miFile.MergeType:= MenuMerge.MergeItems;
  62.  
  63.   miAddDoc:= TMenuItem.Create('&Add Document', nil, Shortcut.CtrlA);
  64.   miAddDoc.Add_Click(FileAddClicked);
  65.   miAddDoc.MergeOrder:= 100;
  66.  
  67.   miSpace:= TMenuItem.Create('-', nil, Shortcut.None);
  68.   miSpace.Add_Click(FileExitClicked);
  69.   miSpace.MergeOrder:= 110;
  70.  
  71.   miExit:= TMenuItem.Create('E&xit', nil, Shortcut.CtrlX);
  72.   miExit.Add_Click(FileExitClicked);
  73.   miExit.MergeOrder:= 115;
  74.  
  75.   miFile.MenuItems.Add(miAddDoc);
  76.   miFile.MenuItems.Add(miSpace);     // Gives us a seperator
  77.   miFile.MenuItems.Add(miExit);
  78.  
  79.   //Add Window Menu
  80.   miWindow:= MainMenu.MenuItems.Add('&Window');
  81.   miWindow.MergeOrder:= 10;
  82.  
  83.   miWindow.MenuItems.Add(TMenuItem.Create('&Cascade', nil, Shortcut.CtrlC));
  84.   miWindow.MenuItems[0].Add_Click(WindowCascadeClicked);
  85.  
  86.   miWindow.MenuItems.Add(TMenuItem.Create('Tile &Horizontal', nil, Shortcut.CtrlH));
  87.   miWindow.MenuItems[1].Add_Click(WindowTileHClicked);
  88.  
  89.   miWindow.MenuItems.Add(TMenuItem.Create('Tile &Vertical', nil, Shortcut.CtrlV));
  90.   miWindow.MenuItems[2].Add_Click(WindowTileVClicked);
  91.  
  92.   miWindow.MdiList:= True ; //Adds the MDI Window List to the bottom of the menu
  93.   
  94.   AddDocument; //Add an initial doc
  95. end;
  96.  
  97. destructor TMainForm.Destroy;
  98. begin
  99.   if (FComponents <> nil) then
  100.    FComponents.Dispose;
  101.   inherited;
  102. end;
  103.  
  104. procedure TMainForm.InitComponents;
  105. begin
  106.   SuspendLayout;
  107.  
  108.   FWindowCount:= 0;
  109.   FComponents:= TContainer.Create;
  110.   MainMenu:= TMainMenu.Create;
  111.   StatusBar:= TStatusBar.Create;
  112.   Text:= 'MDI Example';
  113.   AutoScaleBaseSize:= TSize.Create(5, 13);
  114.   Menu:= MainMenu;
  115.   ClientSize:= TSize.Create(450, 200);
  116.   BackColor:= SystemColors.Control;
  117.   StatusBar.Location:= TPoint.Create(0, 180);
  118.   StatusBar.Size:= TSize.Create(450, 20);
  119.   StatusBar.TabIndex:= 1;
  120.   Controls.Add(StatusBar);
  121.  
  122.   ResumeLayout(False);
  123. end;
  124.  
  125. procedure TMainForm.AddDocument;
  126. var
  127.   Doc: TDocument;
  128. begin
  129.  Inc(FWindowCount);
  130.  Doc:= TDocument.Create('Document ' + IntToStr(FWindowCount));
  131.  Doc.MdiParent:= Self;
  132.  Doc.Show;
  133. end;
  134.  
  135. procedure TMainForm.FileAddClicked(Sender: TObject; Args: EventArgs);
  136. begin
  137.   AddDocument;
  138. end;
  139.  
  140. // File->Exit Menu item handler
  141. procedure TMainForm.FileExitClicked(Sender: TObject; Args: EventArgs);
  142. begin
  143.   Close;
  144. end;
  145.  
  146. // One of the MDI Child windows has been activated
  147. procedure TMainForm.MDIChildActivated(Sender: TObject; Args: EventArgs);
  148. begin
  149.   if (ActiveMdiChild = nil) then
  150.     StatusBar.Text:= ''
  151.   else
  152.     StatusBar.Text:= ActiveMdiChild.Text;
  153. end;
  154.  
  155. // Window->Cascade Menu item handler
  156. procedure TMainForm.WindowCascadeClicked(Sender: TObject; Args: EventArgs);
  157. begin
  158.   LayoutMdi(MdiLayout.Cascade);
  159. end;
  160.  
  161. // Window->Tile Horizontally Menu item handler
  162. procedure TMainForm.WindowTileHClicked(Sender: TObject; Args: EventArgs);
  163. begin
  164.   LayoutMdi(MdiLayout.TileHorizontal);
  165. end;
  166.  
  167. // Window->Tile Vertically Menu item handler
  168. procedure TMainForm.WindowTileVClicked(Sender: TObject; Args: EventArgs);
  169. begin
  170.   LayoutMdi(MdiLayout.TileVertical);
  171. end;
  172.  
  173. var
  174.   MainForm: TMainForm;
  175. begin
  176.   MainForm:= TMainForm.Create(nil);
  177.   Application.Run(MainForm);
  178.   MainForm.Free;
  179. end.
  180.